做為一個後端工程師,在架設網站時,免不了碰到資料上的問題,可能在顧客交易後,需要存取訂單,以保留資訊,以利往後查詢,這時你就必須要有一個資料庫,提供你存取資料的功能。
這裡會介紹幾個我在工作上會使用到的資料庫,第一個就是大家比較熟悉的關聯是資料庫 MySQL,Go 語言提供了幾個套件,來對 MySQL 資料庫做操作。
因為這裡主要是教學如何使用 Golang 搭配 MySQL,所以不再另外介紹 MySQL。
在開始之前,你需要架設好自己的 MySQL 環境。
在你架設好後,你需要先建設 Database 和 Table ,因為下列程式需要,所以必須先建立好 Table:
CREATE TABLE `student` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(64) NULL DEFAULT NULL,
`gender` VARCHAR(64) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);
首先我們先建立資料庫連線:
db, err := sql.Open("mysql", "root:my-secret-pw@tcp(127.0.0.1:3306)/user")
if err != nil {
panic(err)
}
// 釋放連線
defer db.Close()
插入資料
stmt, err := db.Prepare("INSERT `student` SET `name`=?,`gender`=?")
if err != nil {
panic(err)
}
res, err := stmt.Exec("JC", "F")
if err != nil {
panic(err)
}
id, err := res.LastInsertId()
if err != nil {
panic(err)
}
rows, err := db.Query("SELECT * FROM `student`".)
if err != nil {
panic(err)
}
for rows.Next() {
var (
id int64
name string
gender string
)
scanErr := rows.Scan(&id, &name, &gender)
if scanErr != nil {
panic(err)
}
fmt.Println(id)
fmt.Println(name)
fmt.Println(gender)
}
stmt, err = db.Prepare("update `student` set gender=? where `id`=?")
if err != nil {
panic(err)
}
res, err = stmt.Exec("M", 1)
checkErr(err)
update, err := res.RowsAffected()
if err != nil {
panic(err)
}
fmt.Println(update)
stmt, err = db.Prepare("delete from `student` where id=?")
if err != nil {
panic(err)
}
res, err = stmt.Exec(1)
checkErr(err)
del, err = res.RowsAffected()
if err != nil {
panic(err)
}
fmt.Println(del)
MySQL 是許多公司使用的 DB,所以建議你可以去仔細研究他的一些機制,以及語法。Go 語言本身很是何做大量的資料讀寫操作,所以若你剛好是使用 MySQL DB 來做儲存系統,有需求是大量讀取 DB,也推薦你使用 Go 語言開發!